有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中读取JSON多维数组

我有一个问题我还没能找到解决办法,因为我想这不是很直截了当

在我的Java程序中,我收到这样一个字符串(从现有的源代码中,很遗憾,我无法更改它):

["a", 1, "b", 2, ["c", "d", 3], 4]

这个字符串是一个有效的JSON数组(没有对象,所以没有键/值对!)。数组的内容可以是完全随机的(例如,空),但也可以是多维的

我需要找到一种用Java阅读的方法。例如,在上面的例子中,input.get(4).get(2)应该给我3。我真的不在乎是否所有东西都被转换成字符串,但我需要找到一种通过索引访问数据的方法。数据也可以是多个字符,尽管我的示例显示每个元素只有1个字符

我如何做到这一点?提前谢谢

编辑;我确实知道我希望根数组中有多少元素,但是有几十种情况,所以我真的不想为每种情况编写不同的程序


共 (2) 个答案

  1. # 1 楼答案

    选择一个JSON库<他们中的任何一个

    基本的org.json

    JSONArray array = new JSONArray(yourString); 
    JSONArray arrayTwo = array.getJSONArray(4); 
    int i = arrayTwo.getInt(2);
    

    格森:

    JsonElement element = new JsonParser().parse(json);
    JsonArray array = element.getAsJsonArray();
    JsonArray arrayTwo = array.get(4).getAsJsonArray();
    int i = arrayTwo.get(2).getAsInt();
    

    等等等等

  2. # 2 楼答案

    使用jackson 2.3.0:

    import com.fasterxml.jackson.databind.*;
    
    ObjectMapper mapper = new ObjectMapper();
    JsonNode node = mapper.readTree("[\"a\", 1, \"b\", 2, [\"c\", \"d\", 3], 4]");
    int i = node.path(4).path(2).intValue();
    System.out.println(i);
    

    印刷品

    3
    

    用于JsonNode的Javadoc是here